!% -~S~D !% +language_name=Spanish !% $MAX_LABELS=2000 !% $MAX_ZCODE_SIZE=40000 !!============================================================================== !! !! LA PEQUEÑA CERILLERA !! !!============================================================================== !! !! !! File: cerillera.inf !! Author(s): J. Francisco Martín (jfm.lisaso@gmail.com) !! Cover-art: Anne Anderson !! Language: ES (Castellano) !! System: Inform/INFSP 6 !! Platform: Máquina-Z !! Release: 1.2 !! Released: 2010/12/13 !! Notes: !! !! Gran parte del código fuente del relato ha sido copiado directamente !! del código empleado en otros proyectos del autor, por lo que hay !! muchas cosas prescindibles y que no aportan nada más que espacio !! innecesario y dificultades a la hora de leerlo y entenderlo. Sin !! embargo, debido a la falta de tiempo, ha sido imposible realizar una !! revisión para eliminar todo aquello que pueda sobrar. !! !! !!------------------------------------------------------------------------------ !! !! !! MODIFICACIONES A LA LIBRERÍA: !! !! [SpanishG.h - ParseNoun] Se altera el comportamiento de ParseNoun para que !! no acepte cadenas de texto definidas en el campo 'adjectives' de un objeto !! como referentes válidos al objeto a menos que exista también una !! coincidencia en los valores de su campo 'name'. !! !! DIRECTIVAS DE COMPILACIÓN: !! !! El programa excede la cantidad de memoria reservada por defecto, de modo !! que se modifican las directivas de compilación "MAX_LABELS" (orig. 1000) y !! "MAX_ZCODE_SIZE" (orig. 20000) para reservar más memoria. !! !! !!------------------------------------------------------------------------------ !! !! !! Este programa es software libre: usted puede redistribuirlo y/o !! modificarlo bajo los términos de la Licencia Pública General GNU !! publicada por la Fundación para el Software Libre, ya sea la versión !! 3 de la Licencia, o (a su elección) cualquier versión posterior. !! !! Este programa se distribuye con la esperanza de que sea útil, pero !! SIN GARANTÍA ALGUNA; ni siquiera la garantía implícita MERCANTIL o !! de APTITUD PARA UN PROPÓSITO DETERMINADO. Consulte los detalles de !! la Licencia Pública General GNU para más información. !! !! Debería haber recibido una copia de la Licencia Pública General GNU !! junto a este programa. En caso contrario, consulte !! . !! !! Copyright (c) 2010, J. Francisco Martín !! !! !!------------------------------------------------------------------------------ !!============================================================================== !! Constantes y variables globales del relato !!------------------------------------------------------------------------------ Constant Story "LA PEQUEÑA CERILLERA, de H.C. Andersen"; Constant Headline "Un cuento interactivo por José Fco. Martín Lisaso, (c) 2010"; Constant Checking 1; !Release 0; Serial "101209"; !Release 1; Serial "101210"; Release 2; Serial "101213"; Constant MANUAL_PRONOUNS; ! Los pronoms. refieren a objetos ya mencionados Constant NO_PLACES; ! Acciones LUGARES Y OBJETOS desactivadas Constant NO_SCORE; ! No se lleva conteo de puntuación Constant SIN_MENSAJES; ! Se omiten los mensajes por defecto de la lib. Constant STPARSER_STYLE _STI_; ! Selecciona formato de los mensajes del parser Constant STPARSER_MSG1 "[ "; ! Define texto inicial de mensajes del parser Constant STPARSER_MSG2 " ]"; ! Define texto final de mensajes del parser Constant MISTYPE_MSG1 "[> "; ! Define texto inicial de mensajes del corrector Constant MISTYPE_MSG2 " ]^"; ! Define texto final de mensajes del corrector Constant QUICKCHECK; ! "mistype.h": corrección rápida Constant NAMEABLES; ! Permite rutinas generales de parsing en objs. Global GRAMMATICAL_FLEXION = 2;! Mensajes por defecto en presente, 2a pers. Global FORMER__TX = "tu antiguo ~yo~"; Global YOURSELF__TX = "ti mismo"; Global CANTGO__TX = "No puedes ir por ahí."; Global IS__TX = " hay"; Global ARE__TX = " hay"; Global IS2__TX = "hay "; Global ARE2__TX = "hay "; Global YOU__TX = "Tú"; Global PARTICULA_TE = "te"; !!============================================================================== !! Librerías, clases y objetos !!------------------------------------------------------------------------------ Replace Banner; ! Información básica sobre el relato, castellano Replace DrawStatusLine; ! Dibuja la barra de estado Replace KeyboardPrimitive; ! Requerido por "mistype.h" Replace LMode1Sub; ! Lookmode 1: Breve Replace LMode2Sub; ! Lookmode 2: Largo (predeterminado) Replace LMode3Sub; ! Lookmode 3: Superbreve Replace LookSub; ! Retorna la descripción de la localidad actual Replace VersionSub; ! Información general sobre el relato, castellano Include "Parser"; ! Decodifica la entrada de teclado Include ">FlexibleSpanish.h"; ! Librería de mensajes flexibles Include ">mistype.h"; ! Corrección automática de errores ortográficos Include ">cerillera_lib.inf"; ! Extensiones a la librería Include "Verblib.h"; ! Define cómo trabajan las acciones Include ">cerillera_obj.inf"; ! Definición de atributos, clases y objetos !!============================================================================== !! Puntos de entrada y otras rutinas !!------------------------------------------------------------------------------ [ Initialise; SetGrammaticalFlexion( 6,1 ); ! Mensajes de la lib. en pasado, 3a persona inventory_style = ENGLISH_BIT + RECURSE_BIT + FULLINV_BIT; ChangePlayer( Cerillera ); location = ESQUINA; lookmode = 2; EraseWindow(); banner(); new_line; new_line; print (stparser) "Haz clic aquí y pulsa una tecla para empezar"; KeyCharPrimitive(); EraseWindow(); return 2; ]; !!------------------------------------------------------------------------------ !! Foco del jugador !!------------------------------------------------------------------------------ [ InScope person item; !!------------------- if ( person==player && location==thedark ) { objectloop( item in parent(player) ) if ( item has moved ) PlaceInScope( item ); } !!------------------- return false; ]; !!------------------------------------------------------------------------------ !! Imprime el pronombre nominativo correcto correspondiente a un objeto !!------------------------------------------------------------------------------ [ SpanishNominativePronoun obj; switch (GetGNAOfObject(obj)) { 0, 6: print "él"; 1, 7: print "ella"; 2, 8: print "ello"; 3, 9: print "ellos"; 4, 10: print "ellas"; 5, 11: print "ellos"; } ]; !!------------------------------------------------------------------------------ !! Deja la ventana en blanco !!------------------------------------------------------------------------------ [ EraseWindow; #Ifdef TARGET_ZCODE; @erase_window -1; #Ifnot; ! TARGET_GLULX if (gg_quotewin) { glk($0024, gg_quotewin, 0); ! close_window gg_quotewin = 0; } glk($002A, gg_mainwin); ! window_clear if (gg_statuswin) glk($002A, gg_statuswin); ! window_clear #Endif; ]; !!============================================================================== !! Gramática estándar y extendida !!------------------------------------------------------------------------------ Include "SpanishG"; ! Gramática española Include ">GramaticaExtendida.h"; ! Gramática española extendida !!------------------------------------------------------------------------------ Verb meta 'ayuda' 'pista' 'pistas' * -> Help ; VerboIrregular "mostrar ayuda" with imperativo 'ayuda'; Extend 'habla' replace * noun -> TalkTo * 'a'/'con' noun -> TalkTo * creature -> TalkTo * 'a'/'con' creature -> TalkTo * 'por' noun -> TalkOn * 'por' creature -> TalkOn ; Verb 'conversa' 'platica' * noun -> TalkTo * 'a'/'con' noun -> TalkTo * creature -> TalkTo * 'a'/'con' creature -> TalkTo * 'por' noun -> TalkOn * 'por' creature -> TalkOn ; !!------------------------------------------------------------------------------ [ HelpSub; return OBJayuda.gestor_pistas(); ]; [ TalkOnSub; print (string) MISTYPE_MSG1; print "habla con ", (name) noun; print (string) MISTYPE_MSG2; <>; ]; [ TalkToSub; if ( noun == player ) { switch (GRAMMATICAL_FLEXION) { 1,2,3: "Hablar con uno mismo no resulta especialmente divertido."; 4,5,6: "Hablar con uno mismo no resultaba especialmente divertido."; } } if ( noun hasnt animate ) switch (GRAMMATICAL_FLEXION) { 1,2,3: "Siempre es mejor intentar hablar con cosas que puedan devolver una respuesta."; 4,5,6: "Siempre fue mejor intentar hablar con cosas que pudiesen devolver una respuesta."; } switch (GRAMMATICAL_FLEXION) { 1: print_ret (The) noun, " no parece", (n) noun, " estar interesad", (o) noun, " en hablar conmigo."; 2: print_ret (The) noun, " no parece", (n) noun, " estar interesad", (o) noun, " en hablar contigo."; 3: print (The) noun, " no parece", (n) noun, " estar interesad", (o) noun, " en hablar con "; SpanishNominativePronoun( player ); "."; 4: print_ret (The) noun, " no parecía", (n) noun, " estar interesad", (o) noun, " en hablar conmigo."; 5: print_ret (The) noun, " no parecía", (n) noun, " estar interesad", (o) noun, " en hablar contigo."; 6: print (The) noun, " no parecía", (n) noun, " estar interesad", (o) noun, " en hablar con "; SpanishNominativePronoun( player ); "."; } ];